package com.igeek.health.config;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.PropertySource;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;

/**
 * @Description Redis配置类
 * @Author chenmin
 * @Version 1.0
 * @Date 2023/2/21 9:52
 */
@PropertySource("classpath:redis.properties")
public class RedisConfig {

    @Bean
    public JedisPool jedisPool(
            @Value("${redis.maxIdle}") Integer maxIdle,
            @Value("${redis.minIdle}") Integer minIdle,
            @Value("${redis.maxTotal}") Integer maxTotal,
            @Value("${redis.url}") String url,
            @Value("${redis.port}") Integer port,
            @Value("${redis.password}") String password,
            @Value("${redis.timeout}") Integer timeout
    ){
        //设置配置类的参数，管理连接池
        JedisPoolConfig config = new JedisPoolConfig();
        //空闲时，允许的最大连接数
        config.setMaxIdle(maxIdle);
        //空闲时，允许的最小连接数
        config.setMinIdle(minIdle);
        //池子中，最大连接数
        config.setMaxTotal(maxTotal);
        //超过最大连接数时，进入等待状态
        config.setBlockWhenExhausted(true);
        //获得的连接，都是ping通的连接
        config.setTestOnBorrow(true);
        //归还连接时，会进行检查，检查不通过，销毁。
        config.setTestOnReturn(true);

        return new JedisPool(config , url , port , timeout , password);
    }

}
